L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
r = []
for i in range(3):
    r.append(L[i])
print(r)  # ['Michael', 'Sarah', 'Tracy']
# 从索引0开始取，直到索引3为止，但不包括索引3,含前不含后
print(L[0:3])  # ['Michael', 'Sarah', 'Tracy']
# 如果第一个索引是0，还可以省略
print(L[:3])  # ['Michael', 'Sarah', 'Tracy']
# 类似的，既然Python支持L[-1]取倒数第一个元素，那么它同样支持倒数切片,记住倒数第一个元素的索引是-1
print(L[-2:])  # ['Bob', 'Jack']

L = list(range(100))
print(L[:10])  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(L[-10:])  # [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
print(L[10:20])  # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
# 前10个数，每两个取一个
print(L[:10:2])  # [0, 2, 4, 6, 8]
# 所有数，每5个取一个
print(L[::5])  # [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
# 甚至什么都不写，只写[:]就可以原样复制一个list：
print(L[:])

# tuple也是一种list，唯一区别是tuple不可变。因此，tuple也可以用切片操作，只是操作的结果仍是tuple：
print((0, 1, 2, 3, 4, 5)[:3])  # (0, 1, 2)
# 字符串'xxx'也可以看成是一种list，每个元素就是一个字符。因此，字符串也可以用切片操作，只是操作结果仍是字符串：
print('ABCDEFG'[:3])  # ABC
print('ABCDEFG'[::2])  # ACEG

